#include "config.h"

#include <QSettings>

Config::Config() {}

Config *Config::instance()
{
    static Config cfg;
    return &cfg;
}

QString Config::currentProjectPath() const
{
    return m_currentProjectPath;
}

void Config::setCurrentProjectPath(const QString &newCurrentProjectPath)
{
    m_currentProjectPath = newCurrentProjectPath;
}


/*******************************************************************
* 注册文件关联
*       className    // 自定义的类别
*       appPath      // 关联的程序目录
*       ext          // 关联的文件类型
*       extDes       // 该文件类型描述
*******************************************************************/
void Config::registerFileRelation(const QString& className, const QString& appPath,
    const QString& ext, const QString& extDes)
{
    QString baseUrl("HKEY_CURRENT_USER\\Software\\Classes");    // 要添加的顶层目录
    QSettings settingClasses(baseUrl,QSettings::NativeFormat);

    QString path = appPath;
    path.replace("/", "\\");

    // 在...Classes\类别下创建一个新的类别，并设置该类别打开文件时的调用参数
    settingClasses.setValue("/" + className + "/Shell/Open/Command/.","\"" + path.replace("/", "\\") + "\" \"%1\"");

    // 文件类型描述
    settingClasses.setValue("/" + className + "/.",extDes);

    // 设置该类别的默认图标默认图标
    settingClasses.setValue("/" + className + "/DefaultIcon/.",path + ",0");

    // 关联ext 和 类别
    settingClasses.setValue("/" + ext + "/OpenWithProgIds/" + className,"");

    // 立即保存该修改
    settingClasses.sync();
}
